Einsatzmöglichkeiten für MQTT im Bereich der Home Automation
alarmschaben.github.com/talks/mqtt-homeautomation
http://alarmschaben.github.com/talks-de/mqtt-homeautomation
MQTT ist ein Pub/Sub - Protokoll für unzuverlässige Netze
Pub/Sub
Pub/Sub
-
Broker ist zentraler Server
-
Entkopplung von Sendern und Empfängern
-
Zentraler Messaging-Bus
Überblick
-
Message Queue Telemetry Transport (alt)
-
Entwickelt seit 1999
-
Seit Version 3.1 OASIS-Standard (2013)
-
"lightweight"
-
16 message types
-
geringer Protokoll-Overhead
-
schnell
-
low-bandwidth / high-latency
Features
-
Topic / Payload - Mechanismus
-
nest/livingroom/temperature 20.8
-
256 MB binärer payload +2 Byte Protokoll
-
Ein TCP-Port (1883)
-
Einfach für Firewalls
-
Security
-
Authentifizierung
-
TLS
-
ACLs
Mehr Features
-
Keepalive
-
Last Will and Testament (LWT)
-
Erkennung toter Clients
-
Ermöglicht Fehlerbehandlung
-
Message Retaining
-
Letzter Payload eines Topics persistiert
-
Quality of Service
Topics
-
UTF-8
-
Bis zu 64 kB lang
-
Hierarchisch
-
Wildcards
-
nest/livingroom/temperature
-
nest/#
-
nest/+/humidity
-
Besonderheit bei $SYS
$SYS/broker/version mosquitto version 1.3.4
$SYS/broker/timestamp 2014-08-07 13:08:12+0100
$SYS/broker/changeset abbbb585edc5b6b9bb35f2563b957144e5368037
$SYS/broker/connection/lallapi/state 1
$SYS/broker/uptime 8877282 seconds
$SYS/broker/clients/total 8
$SYS/broker/clients/inactive 2
$SYS/broker/clients/active 6
$SYS/broker/clients/maximum 8
$SYS/broker/clients/expired 0
$SYS/broker/messages/stored 192
$SYS/broker/messages/received 4227622
$SYS/broker/messages/sent 8192697
[...]
Quality of Service
-
0 - At most once
-
1 - Assured delivery
-
2 - Exactly once
Bridging
-
Verbindung zwischen Brokern
-
Auch 1883 TCP
-
TLS möglich
-
Selektive Weitergabe
-
Topic rewriting
-
nest/# → casa-alarmschaben/#
Sprachen
-
Ruby
-
Python
-
Arduino Sketch
-
Java
-
Perl
-
JavaScript
-
…
Implementationen (Mosquitto)
-
BSD-Lizenz
-
Implementiert in C
-
Sehr schnell
-
Unterstützt WebSockets
-
Unterstützt Bridges
Implementationen (HiveMQ)
-
Closed Source
-
Implementiert in Java
-
"Enterprise grade"
-
Clusterfunktionen
-
Kostenpflichtig!
ESP8266
-
32 Bit WLAN-SoC
-
Modul inkl. WLAN-PHY
-
Spottbillig
-
SDIO / SPI / UART
-
MQTT-Client verfügbar
mqttwarn
Beispiel: DHT22-Sensor
/nest/livingroom/dhtbox/state online(retained)
/nest/livingroom/dhtbox/state offline(LWT)
/nest/livingroom/humidity 45.4(retained)
/nest/livingroom/temperature 23.1(retained)
Beispiel: Gateway Klingelknopf → Internet
/nest/hall/doorbell/state online(retained)
/nest/hall/doorbell/state offline(LWT)
/nest/hall/doorbell/ring 1
Per Bridge auf Broker im Internet
MQTTWarn hat Subscription
Resultat…
Beispiel: Gateway Klingelknopf → Internet
Beispiel: Aquarium-Steuerrechner
Danke!
Kontakt:
armin@gnosa.com (Mail / XMPP)
Twitter / Github @alarmschaben